import { Field, Form, Formik } from 'formik' import { Helmet } from 'react-helmet-async' import { inferMutationInput, trpc } from '~/utils/trpc' import IVInputField from '~/components/IVInputField' import IVButton from '~/components/IVButton' import { ReferralInfo, referralInfoSchema } from '~/utils/referralSchema' import IVCheckbox from '~/components/IVCheckbox' import AuthLoadingState from '~/components/AuthLoadingState' import IVAPIError from '~/components/IVAPIError' import { ORG_SLUG_CONSTRAINTS, validateOrgSlugChange, } from '../dashboard/[orgSlug]/organization/settings' import { useOrgParams } from '~/utils/organization' import { useState } from 'react' import AuthPageHeader from '~/components/AuthPageHeader' import { REFERRAL_LOCAL_STORAGE_KEY } from '~/utils/isomorphicConsts' export default function ConfirmSignupPage() { const { orgSlug } = useOrgParams() const updateOrg = trpc.useMutation('auth.confirm-sso') const orgCheck = trpc.useQuery([ 'auth.confirm-sso.check', { orgSlug: orgSlug as string }, ]) const [hasPromoCode, setHasPromoCode] = useState(false) if (orgCheck.error) { return ( ) } if (orgCheck.isLoading || !orgCheck.data) { return } return (
Account setup | Interval
> initialValues={{ firstName: orgCheck.data.firstName ?? '', lastName: orgCheck.data.lastName ?? '', orgSlug: orgSlug as string, orgName: orgCheck.data.orgName, orgId: orgCheck.data.orgId, }} onSubmit={async values => { if (updateOrg.isLoading) return let referralInfo: ReferralInfo | undefined if (typeof window !== undefined) { const savedData = window.sessionStorage.getItem( REFERRAL_LOCAL_STORAGE_KEY ) if (savedData) { try { referralInfo = referralInfoSchema.parse(JSON.parse(savedData)) } catch (err) { console.error('Invalid referral info', err) } } } updateOrg.mutate( { ...values, referralInfo }, { async onSuccess() { window.location.assign( `/dashboard/${values.orgSlug}/develop/actions` ) }, } ) }} > {({ values, errors, touched, setFieldValue }) => { return (
{orgCheck.data?.canRenameOrg && ( <> { // skip server-side checks if value has not changed from default if (slug === orgSlug) return return await validateOrgSlugChange( orgCheck.data.orgId, slug ) }} /> )} {hasPromoCode ? ( ) : ( )} {updateOrg.isError && (

{updateOrg.error.message ?? ( <> Sorry, we were unable to finish setting up your account. Please reach out to{' '} help@interval.com . )}

)}
) }}
) }